package com.zy.explore.demo.infrastructure.enums;


import com.zy.explore.demo.infrastructure.constants.IErrorCode;

/**
 * description 自定义错误码枚举
 *
 * @author ZY
 * @date 2021-03-06 15:02:21
 **/
public enum ErrorCodeEnum implements IErrorCode {
    /***
     * 1. 以下错误码的定义，需要提前与前端沟通
     * 2. 错误码按模块进行错误码规划
     * 3. 所有错误码枚举类均需要实现错误码接口类
     *
     *
     * 请求成功
     */
    OK(200, "请求成功"),
    /**
     * 频繁操作
     */
    MULTI_STATUS(207, "频繁操作"),
    /**
     * 登录失
     */
    LOGIN_FAIL(303, "登录失败"),
    /**
     * 请求参数出错
     */
    BAD_REQUEST(400, "请求参数出错"),
    /**
     * 没有权限
     */
    FORBIDDEN(403, "没有权限"),
    /**
     * 找不到页面
     */
    NOT_FOUND(404, "找不到页面"),
    /**
     * 请求超时
     */
    REQUEST_TIMEOUT(408, "请求超时"),
    /**
     * 发生冲突
     */
    CONFLICT(409, "发生冲突"),
    /**
     * 已被删除
     */
    GONE(410, "已被删除"),
    /**
     * 已被锁定
     */
    LOCKED(423, "已被锁定"),
    /**
     * 请求参数出错
     */
    REPEAT_REQUEST(424, "重复的请求"),
    /**
     * 服务器出错
     */
    INTERNAL_SERVER_ERROR(500, "服务器出错"),

    FORM_VALIDATION_ERROR(101001, "表单验证错误"),
    // 用户登录方面错误码
    LOGIN_ERROR(101002, "你还未登陆,请及时登陆"),
    TOKEN_ERROR(101003, "登录凭证已过期，请重新登录"),

    DATE_OUT_OF_RANGE(500001, "日期范围越界"),


    ;

    private final Integer errorCode;
    private final String errorMsg;

    ErrorCodeEnum(Integer errorCode, String errorMsg) {
        this.errorCode = errorCode;
        this.errorMsg = errorMsg;
    }

    /**
     * 获取错误码
     *
     * @return 返回错误码
     */
    @Override
    public Integer getErrorCode() {
        return errorCode;
    }

    /**
     * 获取错误消息
     *
     * @return 返回错误信息
     */
    @Override
    public String getErrorMsg() {
        return errorMsg;
    }

}